$regfile = "m32def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Pinb.0 , Db5 = Pinb.1 , Db6 = Pinb.2 , _
Db7 = Pinb.3 , Rs = Pinb.4 , E = Pinb.5
Config Lcd = 16 * 2
Config Kbd = Portc , Debounce = 50 , Delay = 150
Declare Sub Main
Dim A As Byte , B As Byte , C As String * 8 , D As Long
Dim E As Eram Long
Ddrd.0 = 1 : Portd.0 = 0
'---------------LCD INITIALIZE------------------------------------
Cls : Cursor Off : Home
Lcd "Avr-amoozesh"
Wait 2 : Cls : Home
'---------------MAIN LOOP-----------------------------------
If E = &HFFFFFFFF Then
jmp Here
Else
jmp Sh
End If
Here:
E = 123456
Sh:
Cls : Home : Lcd "PASSWORD?ENTER=#"
B = 0 : C = "" : Reset Portd.0
Locate 2 , 1
Call Main
If E = D Then
   Set Portd.0 : Jmp Bb
Else
   Reset Portd.0 : Cls : Home
   Lcd "Wrong Password"
   Wait 2 : Cls : Home : Jmp Sh
End If
Bb:
Cls : Cursor Off : Home
Lcd "1:Change Pass"
Locate 2 , 1 : Lcd "2:Back"
Bc:
A = Getkbd()
If A > 15 Then Jmp Bc
'--------------------------
A = Lookup(a , Farzan)
If A = 49 Then Jmp Change
If A = 50 Then Jmp Sh
jmp Bc
Change:
Cls : Cursor Off : Home
Lcd "Type Old Pass"
Locate 2 , 1
Call Main
If E = D Then
   jmp Gh
Else
   Cls : Home : Lcd "Wrong Pass" : Wait 2
   jmp Bb
End If
Gh:
Cls : Cursor Off : Home
Lcd "Type New Pass"
Locate 2 , 1
Call Main
E = D
jmp Bb
End                                                         'end program
'--------------------------------------------------------
Main:
B = 0 : C = ""
Aa:
A = Getkbd()
If A > 15 Then Jmp Aa
A = Lookup(a , Farzan)
Select Case A
'----------------------
Case 48 To 57:
If B < 8 Then
   Incr B
   Lcd String(1 , A)
   C = C + String(1 , A)
End If
jmp Aa
'----------------------
Case 11:
D = Val(c)
End Select
Return
'--------------------------------------------------
Farzan:
Data 0 , 49 , 50 , 51 , 0 , 52 , 53 , 54 , 0 , 55 , 56 , 57 , 0 , 0 , 48 , 11